Ladeni DLL pod ISAPI

Otázka od: Jiří Matějka

3. 12. 2002 15:46

Zdravim,
 mam knihovnu ISAPI bezici pod IIS, ktera si za behu natahuje dalsi DLL
(normalni neISAPI), od ktere dostane nejaky vystup, ktery dale formatuje do
HTML a posila zpet klientovi. V zasade to vsechno funguje, ale problem je,
ze pri ladeni pod Delphi nelze trasovat kus kodu, ktery bezi v neISAPI
knihovne... (mj. breakpointy v ni jsou neaktivni). Funguje to vzdy pouze pri
prvnim startu, jakmile to DLLko pozmenim a prekompiluju, tak uz to nejde a
je nutny restart Delphi.

Jako Host application pro ISAPI je nastaven webserver (inetinfo.exe) s
parametrem -e w3svc. Samotne neisapi DLLko zadou host application
definovanou nema...

Nemate nekdo zkusenost s necim podobnym? Co kde nastavit, aby se to dalo
normalne ladit?

D6 Prof, W2000 SP3, IIS 5.0

diky

Jirka Matejka



---
Odchozí zpráva neobsahuje viry.
No viruses found in the outgoing message.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.423 / Virová báze: 238 - datum vydání: 25.11.2002

Odpovedá: Peter Ondras

3. 12. 2002 21:04

Nie je potrebne restartovat Delphi, ale naopak IIS. Ked robis ISAPI DLL
tak sa natiahne do pamate, aby sa potom rychlejsie nacitavalo a kvoli
milionom dalsich dovodov. Cize vzdy ked upravis zdrojak musis vypnut IIS
(resp. stop), potom prekompilovat DLL a znovu spustit IIS (resp. start).
Poznam vsak jedno elegantne riesenie. Pri ladeni nepouzivaj ISAPI DLL,
ale CGI standalone executable. Pri pouziti CGI nemusis stale vypinat a
zapinat IIS. Kod unitu pri CGI a ISAPI DLL ostava rovnaky a meni sa len
projektovy subor DPR. Vyskusaj si vytvorit jednoduchu aplikaciu CGI a
ISAPI a zistis, ze ten kod je skutocne rovnaky a len DPR je ine. Cize po
vytvoreni kratkych oboch aplikacii ziskas dve verzie DPR, ktore si
niekde zalohujes a potom zacne pokojne vyvijat unit, ktory si aj
vyladis. Ked skoncis ladenie, prekompilujes uz len unit s DPR pre ISAPI
a budes mat funkcny.

P.S.: Prave som si este raz precital tvoj problem a mam pocit, ze som
tesne vedla s tou radou. Pre istotu tento mail vsak odoslem, mozno ti to
pomoze. Ak nie tak sorry, ze som tu tak trepal  

Peter Ondras
peter.ondras@pse.sk
(+421) 0904 421 925


>: -----Original Message-----
>: From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]
On
>: Behalf Of Jiří Matějka
>: Sent: Tuesday, December 03, 2002 3:12 PM
>: To: delphi-l@clexpert.cz
>: Subject: Ladeni DLL pod ISAPI
>:
>: Zdravim,
>: mam knihovnu ISAPI bezici pod IIS, ktera si za behu natahuje dalsi
DLL
>: (normalni neISAPI), od ktere dostane nejaky vystup, ktery dale
formatuje
>: do
>: HTML a posila zpet klientovi. V zasade to vsechno funguje, ale
problem
>: je,
>: ze pri ladeni pod Delphi nelze trasovat kus kodu, ktery bezi v
neISAPI
>: knihovne... (mj. breakpointy v ni jsou neaktivni). Funguje to vzdy
pouze
>: pri
>: prvnim startu, jakmile to DLLko pozmenim a prekompiluju, tak uz to
nejde
>: a
>: je nutny restart Delphi.
>:
>: Jako Host application pro ISAPI je nastaven webserver (inetinfo.exe)
s
>: parametrem -e w3svc. Samotne neisapi DLLko zadou host application
>: definovanou nema...
>:
>: Nemate nekdo zkusenost s necim podobnym? Co kde nastavit, aby se to
dalo
>: normalne ladit?
>:
>: D6 Prof, W2000 SP3, IIS 5.0
>:
>: diky
>:
>: Jirka Matejka
>:
>:
>:
>: ---
>: Odchozí zpráva neobsahuje viry.
>: No viruses found in the outgoing message.
>: Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
>: Verze: 6.0.423 / Virová báze: 238 - datum vydání: 25.11.2002
>:

Odpovedá: Jan Sebelík

4. 12. 2002 9:54

> Odesílatel: Peter Ondras <peter.ondras@pse.sk>
> Poznam vsak jedno elegantne riesenie. Pri ladeni nepouzivaj ISAPI DLL,
> ale CGI standalone executable.
> Ked skoncis ladenie, prekompilujes uz len unit s DPR pre ISAPI
> a budes mat funkcny.

> P.S.: Prave som si este raz precital tvoj problem a mam pocit, ze som
> tesne vedla s tou radou. Pre istotu tento mail vsak odoslem, mozno ti to
> pomoze. Ak nie tak sorry, ze som tu tak trepal  

Myslim, ze takto je to spravne.
Osobne bych se ale vyhybal formatovani html v ISAPI nebo CGI.
Kazda drobna zmena vyzaduje rekompilaci.
Spise bych pro formatovani pouzil treba ASP+JScript, do ktereho by mi data
(nebo co) podal nejaky COM-objekt, ktery bych si v Delphi vytvoril.

Viz kurz "Webove aplikace" 6.1.2003.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================

Odpovedá: Jiří Matějka

4. 12. 2002 10:03

Diky, skutecne to je malinko vedle   ISAPI se loaduje/unloaduje v pohode
se startem IIS, totez to "podpurne" neISAPI DLLko, ktere je natahovanou tou
ISAPI knihovnou - problem je prave jen v tom, ze me Delphi nechteji pustit
do trasovani toho neisapi DLLka   Kazdopadne sem to vyresil, tak ze sem to
proste obesel, tak ze sem si unitu, kterou pouziva neisapi dllko pridal do
uses od ISAPI knihovny a az to odladim, tak to z uses vyhodim a budu volat
tak jak potrebuju, tzn. pres exportovanou funkci neisapi dllka. Tak kdyby to
taky nekdo potreboval, da se to udelat takhle. Je to trochu kostrbaty, ale
funkcni  

Jirka Matejka

----- Original Message -----
From: "Peter Ondras" <peter.ondras@pse.sk>
To: <delphi-l@clexpert.cz>
Sent: Tuesday, December 03, 2002 8:33 PM
Subject: RE: Ladeni DLL pod ISAPI


Nie je potrebne restartovat Delphi, ale naopak IIS. Ked robis ISAPI DLL
tak sa natiahne do pamate, aby sa potom rychlejsie nacitavalo a kvoli
milionom dalsich dovodov. Cize vzdy ked upravis zdrojak musis vypnut IIS
(resp. stop), potom prekompilovat DLL a znovu spustit IIS (resp. start).
Poznam vsak jedno elegantne riesenie. Pri ladeni nepouzivaj ISAPI DLL,
ale CGI standalone executable. Pri pouziti CGI nemusis stale vypinat a
zapinat IIS. Kod unitu pri CGI a ISAPI DLL ostava rovnaky a meni sa len
projektovy subor DPR. Vyskusaj si vytvorit jednoduchu aplikaciu CGI a
ISAPI a zistis, ze ten kod je skutocne rovnaky a len DPR je ine. Cize po
vytvoreni kratkych oboch aplikacii ziskas dve verzie DPR, ktore si
niekde zalohujes a potom zacne pokojne vyvijat unit, ktory si aj
vyladis. Ked skoncis ladenie, prekompilujes uz len unit s DPR pre ISAPI
a budes mat funkcny.

P.S.: Prave som si este raz precital tvoj problem a mam pocit, ze som
tesne vedla s tou radou. Pre istotu tento mail vsak odoslem, mozno ti to
pomoze. Ak nie tak sorry, ze som tu tak trepal  

Peter Ondras
peter.ondras@pse.sk
(+421) 0904 421 925


>: -----Original Message-----
>: From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]
On
>: Behalf Of Jiří Matějka
>: Sent: Tuesday, December 03, 2002 3:12 PM
>: To: delphi-l@clexpert.cz
>: Subject: Ladeni DLL pod ISAPI
>:
>: Zdravim,
>: mam knihovnu ISAPI bezici pod IIS, ktera si za behu natahuje dalsi
DLL
>: (normalni neISAPI), od ktere dostane nejaky vystup, ktery dale
formatuje
>: do
>: HTML a posila zpet klientovi. V zasade to vsechno funguje, ale
problem
>: je,
>: ze pri ladeni pod Delphi nelze trasovat kus kodu, ktery bezi v
neISAPI
>: knihovne... (mj. breakpointy v ni jsou neaktivni). Funguje to vzdy
pouze
>: pri
>: prvnim startu, jakmile to DLLko pozmenim a prekompiluju, tak uz to
nejde
>: a
>: je nutny restart Delphi.
>:
>: Jako Host application pro ISAPI je nastaven webserver (inetinfo.exe)
s
>: parametrem -e w3svc. Samotne neisapi DLLko zadou host application
>: definovanou nema...
>:
>: Nemate nekdo zkusenost s necim podobnym? Co kde nastavit, aby se to
dalo
>: normalne ladit?
>:
>: D6 Prof, W2000 SP3, IIS 5.0
>:
>: diky
>:
>: Jirka Matejka
>:
>:
>:
>: ---
>: Odchozí zpráva neobsahuje viry.
>: No viruses found in the outgoing message.
>: Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
>: Verze: 6.0.423 / Virová báze: 238 - datum vydání: 25.11.2002
>:




---
Odchozí zpráva neobsahuje viry.
No viruses found in the outgoing message.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.423 / Virová báze: 238 - datum vydání: 25.11.2002